Autoincrement + ADO

Otázka od: Ing. Keder Vladimir

29. 9. 2002 11:55

Ahoj

   Mam MS Access databazu a v nej vytvorenu tabulku s polom ID typu
autoinkrement. Z delphi 7 pomocou ADO MS Jet 4 chcem vlozit novy zaznam.
Ibaze neviem ako zadat hodnotu pre pole ID. V DAO ktore som pouzival stacilo
dat miesto toho hodnotu null a databaza si to priradila sama. V ADO mi to
stale hlasi chybu. Nechcem zistovat MAX(ID) ale vyuzit prave vlastnost
autoincrement kde si to ma sama urobit databaza. Skusam to aj cez Access
Query ale neviem co tam zadat. Ak zadam unikatnu hodnotu tak sa zaznam
priradi. Ak mam chybu v cislovani a priradim prave chybajucu hodnotu tak sa
zaznam vlozi s touto hodnotou co je podla mna chyba pretoze by sa mala
priradit najvacsia hodnota tohoto pola v tabulke. Pre vlozenie pouzivam
nasledovnu konstrukciu

ADOCommand1.CommandText:= 'INSERT INTO message '+
               
'VALUES ([_ID], [_FromID], [_ToID], [_Datum], [_Priorita],
[_Subject], [_Sprava]);';

  param:= ADOCommand1.Parameters.CreateParameter('_ID', ftAutoInc, pdInput,
0, ???????); //<--- aka hodnota ???
  param.Index:= 0;
  param:= ADOCommand1.Parameters.CreateParameter('_FromID', ftInteger,
pdInput, 0, UserSession.UserID);
  param.Index:= 1;
  param:= ADOCommand1.Parameters.CreateParameter('_ToID', ftInteger,
pdInput, 0, komu);
  param.Index:= 2;
  param:= ADOCommand1.Parameters.CreateParameter('_Datum', ftDate, pdInput,
0, Date);
  param.Index:= 3;
  param:= ADOCommand1.Parameters.CreateParameter('_Priorita', ftInteger,
pdInput, 0, 0);
  param.Index:= 4;
  param:= ADOCommand1.Parameters.CreateParameter('_Subject', ftString,
pdInput, 255, eSubjekt.Text);
  param.Index:= 5;
  param:= ADOCommand1.Parameters.CreateParameter('_Sprava', ftMemo, pdInput,
255, eText.Text);
  param.Index:= 6;
  ADOCommand1.Execute;

   Dakujem za radu

Vlado

Odpovedá: bukaj@iol.cz

29. 9. 2002 18:32

Myslim, ze by melo stacit tu hodnotu vubec nezadavat, proste ji vynechat.
Jestli se mylim, tak se omlouvam.


Kuba

----- Original Message -----
From: "Ing. Keder Vladimir" <vkeder@iol.sk>
To: <delphi-l@clexpert.cz>
Sent: Sunday, September 29, 2002 12:22 PM
Subject: Autoincrement + ADO


Ahoj

   Mam MS Access databazu a v nej vytvorenu tabulku s polom ID typu
autoinkrement. Z delphi 7 pomocou ADO MS Jet 4 chcem vlozit novy zaznam.
Ibaze neviem ako zadat hodnotu pre pole ID. V DAO ktore som pouzival stacilo
dat miesto toho hodnotu null a databaza si to priradila sama. V ADO mi to
stale hlasi chybu. Nechcem zistovat MAX(ID) ale vyuzit prave vlastnost
autoincrement kde si to ma sama urobit databaza. Skusam to aj cez Access
Query ale neviem co tam zadat. Ak zadam unikatnu hodnotu tak sa zaznam
priradi. Ak mam chybu v cislovani a priradim prave chybajucu hodnotu tak sa
zaznam vlozi s touto hodnotou co je podla mna chyba pretoze by sa mala
priradit najvacsia hodnota tohoto pola v tabulke. Pre vlozenie pouzivam
nasledovnu konstrukciu

ADOCommand1.CommandText:= 'INSERT INTO message '+
               
'VALUES ([_ID], [_FromID], [_ToID], [_Datum], [_Priorita],
[_Subject], [_Sprava]);';

  param:= ADOCommand1.Parameters.CreateParameter('_ID', ftAutoInc, pdInput,
0, ???????); //<--- aka hodnota ???
  param.Index:= 0;
  param:= ADOCommand1.Parameters.CreateParameter('_FromID', ftInteger,
pdInput, 0, UserSession.UserID);
  param.Index:= 1;
  param:= ADOCommand1.Parameters.CreateParameter('_ToID', ftInteger,
pdInput, 0, komu);
  param.Index:= 2;
  param:= ADOCommand1.Parameters.CreateParameter('_Datum', ftDate, pdInput,
0, Date);
  param.Index:= 3;
  param:= ADOCommand1.Parameters.CreateParameter('_Priorita', ftInteger,
pdInput, 0, 0);
  param.Index:= 4;
  param:= ADOCommand1.Parameters.CreateParameter('_Subject', ftString,
pdInput, 255, eSubjekt.Text);
  param.Index:= 5;
  param:= ADOCommand1.Parameters.CreateParameter('_Sprava', ftMemo, pdInput,
255, eText.Text);
  param.Index:= 6;
  ADOCommand1.Execute;

   Dakujem za radu

Vlado

Odpovedá: Ing. Keder Vladimir

29. 9. 2002 20:41

Ak by som to tam nedal, hodi to hlasku
'Number of query values and
destination fields are not the same'
Vlado

----- Original Message -----
From: <bukaj@iol.cz>
To: <delphi-l@clexpert.cz>
Sent: Sunday, September 29, 2002 7:29 PM
Subject: Re: Autoincrement + ADO


> Myslim, ze by melo stacit tu hodnotu vubec nezadavat, proste ji vynechat.
> Jestli se mylim, tak se omlouvam.
>
>
> Kuba
>
> ----- Original Message -----
> From: "Ing. Keder Vladimir" <vkeder@iol.sk>
> To: <delphi-l@clexpert.cz>
> Sent: Sunday, September 29, 2002 12:22 PM
> Subject: Autoincrement + ADO
>
>
> Ahoj
>
> Mam MS Access databazu a v nej vytvorenu tabulku s polom ID typu
> autoinkrement. Z delphi 7 pomocou ADO MS Jet 4 chcem vlozit novy zaznam.
> Ibaze neviem ako zadat hodnotu pre pole ID. V DAO ktore som pouzival
stacilo
> dat miesto toho hodnotu null a databaza si to priradila sama. V ADO mi to
> stale hlasi chybu. Nechcem zistovat MAX(ID) ale vyuzit prave vlastnost
> autoincrement kde si to ma sama urobit databaza. Skusam to aj cez Access
> Query ale neviem co tam zadat. Ak zadam unikatnu hodnotu tak sa zaznam
> priradi. Ak mam chybu v cislovani a priradim prave chybajucu hodnotu tak
sa
> zaznam vlozi s touto hodnotou co je podla mna chyba pretoze by sa mala
> priradit najvacsia hodnota tohoto pola v tabulke. Pre vlozenie pouzivam
> nasledovnu konstrukciu
>
> ADOCommand1.CommandText:= 'INSERT INTO message '+
>
'VALUES ([_ID], [_FromID], [_ToID], [_Datum], [_Priorita],
> [_Subject], [_Sprava]);';
>
> param:= ADOCommand1.Parameters.CreateParameter('_ID', ftAutoInc,
pdInput,
> 0, ???????); //<--- aka hodnota ???
> param.Index:= 0;
> param:= ADOCommand1.Parameters.CreateParameter('_FromID', ftInteger,
> pdInput, 0, UserSession.UserID);
> param.Index:= 1;
> param:= ADOCommand1.Parameters.CreateParameter('_ToID', ftInteger,
> pdInput, 0, komu);
> param.Index:= 2;
> param:= ADOCommand1.Parameters.CreateParameter('_Datum', ftDate,
pdInput,
> 0, Date);
> param.Index:= 3;
> param:= ADOCommand1.Parameters.CreateParameter('_Priorita', ftInteger,
> pdInput, 0, 0);
> param.Index:= 4;
> param:= ADOCommand1.Parameters.CreateParameter('_Subject', ftString,
> pdInput, 255, eSubjekt.Text);
> param.Index:= 5;
> param:= ADOCommand1.Parameters.CreateParameter('_Sprava', ftMemo,
pdInput,
> 255, eText.Text);
> param.Index:= 6;
> ADOCommand1.Execute;
>
> Dakujem za radu
>
> Vlado
>
>

Odpovedá: Ludo Fulop

29. 9. 2002 21:57

co tak skusit

INSERT INTO message (fromID, ToID, Datum, Priorita, Subject, Sprava) VALUES
([_FromID], [_ToID], [_Datum], [_Priorita], [_Subject], [_Sprava])

Ludo Fulop

----- Original Message -----
From: "Ing. Keder Vladimir" <vkeder@iol.sk>
To: <delphi-l@clexpert.cz>
Sent: Sunday, September 29, 2002 9:37 PM
Subject: Re: Autoincrement + ADO


> Ak by som to tam nedal, hodi to hlasku
'Number of query values and
> destination fields are not the same'
> Vlado
>
> ----- Original Message -----
> From: <bukaj@iol.cz>
> To: <delphi-l@clexpert.cz>
> Sent: Sunday, September 29, 2002 7:29 PM
> Subject: Re: Autoincrement + ADO
>
>
> > Myslim, ze by melo stacit tu hodnotu vubec nezadavat, proste ji
vynechat.
> > Jestli se mylim, tak se omlouvam.
> >
> >
> > Kuba
> >
> > ----- Original Message -----
> > From: "Ing. Keder Vladimir" <vkeder@iol.sk>
> > To: <delphi-l@clexpert.cz>
> > Sent: Sunday, September 29, 2002 12:22 PM
> > Subject: Autoincrement + ADO
> >
> >
> > Ahoj
> >
> > Mam MS Access databazu a v nej vytvorenu tabulku s polom ID typu
> > autoinkrement. Z delphi 7 pomocou ADO MS Jet 4 chcem vlozit novy zaznam.
> > Ibaze neviem ako zadat hodnotu pre pole ID. V DAO ktore som pouzival
> stacilo
> > dat miesto toho hodnotu null a databaza si to priradila sama. V ADO mi
to
> > stale hlasi chybu. Nechcem zistovat MAX(ID) ale vyuzit prave vlastnost
> > autoincrement kde si to ma sama urobit databaza. Skusam to aj cez Access
> > Query ale neviem co tam zadat. Ak zadam unikatnu hodnotu tak sa zaznam
> > priradi. Ak mam chybu v cislovani a priradim prave chybajucu hodnotu tak
> sa
> > zaznam vlozi s touto hodnotou co je podla mna chyba pretoze by sa mala
> > priradit najvacsia hodnota tohoto pola v tabulke. Pre vlozenie pouzivam
> > nasledovnu konstrukciu
> >
> > ADOCommand1.CommandText:= 'INSERT INTO message '+
> >
'VALUES ([_ID], [_FromID], [_ToID], [_Datum],
[_Priorita],
> > [_Subject], [_Sprava]);';
> >
> > param:= ADOCommand1.Parameters.CreateParameter('_ID', ftAutoInc,
> pdInput,
> > 0, ???????); //<--- aka hodnota ???
> > param.Index:= 0;
> > param:= ADOCommand1.Parameters.CreateParameter('_FromID', ftInteger,
> > pdInput, 0, UserSession.UserID);
> > param.Index:= 1;
> > param:= ADOCommand1.Parameters.CreateParameter('_ToID', ftInteger,
> > pdInput, 0, komu);
> > param.Index:= 2;
> > param:= ADOCommand1.Parameters.CreateParameter('_Datum', ftDate,
> pdInput,
> > 0, Date);
> > param.Index:= 3;
> > param:= ADOCommand1.Parameters.CreateParameter('_Priorita', ftInteger,
> > pdInput, 0, 0);
> > param.Index:= 4;
> > param:= ADOCommand1.Parameters.CreateParameter('_Subject', ftString,
> > pdInput, 255, eSubjekt.Text);
> > param.Index:= 5;
> > param:= ADOCommand1.Parameters.CreateParameter('_Sprava', ftMemo,
> pdInput,
> > 255, eText.Text);
> > param.Index:= 6;
> > ADOCommand1.Execute;
> >
> > Dakujem za radu
> >
> > Vlado
> >
> >

Odpovedá: Robert Fujak

30. 9. 2002 5:16

 ADOCommand1.CommandText:= 'INSERT INTO message '+ // sem vypis polia z
tabulky bez ID
                
'VALUES ([_ID], [_FromID], [_ToID], [_Datum], [_Priorita],
 [_Subject], [_Sprava]);';

NAPR.:
 ADOCommand1.CommandText:=
'INSERT INTO message (_FromID, _ToID, _Datum,
_Priorita, _Subject, _Sprava)'+
                
'VALUES ([_FromID], [_ToID], [_Datum], [_Priorita],
 [_Subject], [_Sprava]);';

Robo.

----- Original Message -----
From: "Ing. Keder Vladimir" <vkeder@iol.sk>
To: <delphi-l@clexpert.cz>
Sent: Sunday, September 29, 2002 12:22 PM
Subject: Autoincrement + ADO


> Ahoj
>
> Mam MS Access databazu a v nej vytvorenu tabulku s polom ID typu
> autoinkrement. Z delphi 7 pomocou ADO MS Jet 4 chcem vlozit novy zaznam.
> Ibaze neviem ako zadat hodnotu pre pole ID. V DAO ktore som pouzival
stacilo
> dat miesto toho hodnotu null a databaza si to priradila sama. V ADO mi to
> stale hlasi chybu. Nechcem zistovat MAX(ID) ale vyuzit prave vlastnost
> autoincrement kde si to ma sama urobit databaza. Skusam to aj cez Access
> Query ale neviem co tam zadat. Ak zadam unikatnu hodnotu tak sa zaznam
> priradi. Ak mam chybu v cislovani a priradim prave chybajucu hodnotu tak
sa
> zaznam vlozi s touto hodnotou co je podla mna chyba pretoze by sa mala
> priradit najvacsia hodnota tohoto pola v tabulke. Pre vlozenie pouzivam
> nasledovnu konstrukciu
>
> ADOCommand1.CommandText:= 'INSERT INTO message '+
>
'VALUES ([_ID], [_FromID], [_ToID], [_Datum], [_Priorita],
> [_Subject], [_Sprava]);';
>
> param:= ADOCommand1.Parameters.CreateParameter('_ID', ftAutoInc,
pdInput,
> 0, ???????); file://<--- aka hodnota ???
> param.Index:= 0;
> param:= ADOCommand1.Parameters.CreateParameter('_FromID', ftInteger,
> pdInput, 0, UserSession.UserID);
> param.Index:= 1;
> param:= ADOCommand1.Parameters.CreateParameter('_ToID', ftInteger,
> pdInput, 0, komu);
> param.Index:= 2;
> param:= ADOCommand1.Parameters.CreateParameter('_Datum', ftDate,
pdInput,
> 0, Date);
> param.Index:= 3;
> param:= ADOCommand1.Parameters.CreateParameter('_Priorita', ftInteger,
> pdInput, 0, 0);
> param.Index:= 4;
> param:= ADOCommand1.Parameters.CreateParameter('_Subject', ftString,
> pdInput, 255, eSubjekt.Text);
> param.Index:= 5;
> param:= ADOCommand1.Parameters.CreateParameter('_Sprava', ftMemo,
pdInput,
> 255, eText.Text);
> param.Index:= 6;
> ADOCommand1.Execute;
>
> Dakujem za radu
>
> Vlado
>
>


----------
Teraz si uz KAZDY moze registrovat svoju domenu .SK
Viac info na: http://www.SlovakNET.sk/predregistracia.asp

Odpovedá: Viliam Mlich

30. 9. 2002 13:11

>>> Ibaze neviem ako zadat hodnotu pre pole ID.

>> Myslim, ze by melo stacit tu hodnotu vubec nezadavat, proste ji
vynechat.

> Ak by som to tam nedal, hodi to hlasku
'Number of query values and
> destination fields are not the same'

Pochopitelne musis vynechat nielen hodnotu, ale aj meno pola ID v
zozname poli.

BTW preco neodmazavate z prispevkov to seno? Kto sa ma v tom hrabat,
clovek aby si oci vyklbil! Lajdackou upravou prispevku nielen urobis zo
seba idiota, ale je to aj bezohladonost voci vsetkym, co to potom musia
citat.

bye
vmlich